This disclosure relates generally to systems and methods used to manage the flow of batch jobs on a computer system. While most people use computer systems to perform tasks interactively through graphical user interfaces, a significant number of tasks are performed by computer systems as batch jobs. Batch jobs are generally used in applications where large amounts of data are needed to complete a task in which data can be accessed and processed without human interaction. Examples of tasks that lend themselves to batch job processing include payroll processing, data collection from large numbers of remote sources and data backups. In large computer systems, software may sometimes be utilized that enables an operator to schedule such jobs so as to meet specific execution start and end time requirements of the batch jobs.
As computer systems have continued to provide increasingly larger processing capacities, however, the numbers of batch jobs that may be scheduled for execution have also continued to increase. As a result, a large mainframe computer may have hundreds or even thousands of batch jobs scheduled for execution at any given point in time. To further complicate matters, groups of jobs may have interdependencies such that one job within a group cannot start until other jobs have completed, and there may be additional time constraints that require that the group start execution at a specific time and complete execution no later than a prescribed end time.
With so many jobs and interactions to contend with, manually scheduling batch jobs such that all the operational constraints are met can be daunting, despite the use of the above-described scheduling software. To make matters worse, if there is any delay in the execution of the scheduled jobs, or if more jobs must be added, it may be necessary for an operator to quickly restructure the schedule in order to not push out the completion of any job or group of jobs beyond its required completion time. This may not be practical or even achievable by the operator, given the sheer volume of information that the operator must take in to account in order to make such changes. It would be desirable to provide a tool that identifies for an operator a subset of jobs within a critical path of one or more job flows that will provide the greatest improvement in job completion times and that does so quickly enough for the adjustment to timely correct job scheduling violations.